# Put all necessary libraries here
library(tidyverse)
library(leaflet)
library(tidycensus)
library(tidyverse)
library(tidycensus)
library(flextable)
library(sf)
library(tigris)
library(tmap)
library(RColorBrewer)
For this problem we will return to the biketown dataset.
StartLatitude,
StartLongitude).biketown_data <- bind_rows(readr::read_csv("https://s3.amazonaws.com/biketown-tripdata-public/2017_01.csv"),
readr::read_csv("https://s3.amazonaws.com/biketown-tripdata-public/2017_07.csv"),
readr::read_csv("https://s3.amazonaws.com/biketown-tripdata-public/2017_11.csv")) %>%
select(StartDate, StartTime, EndDate, EndTime, Distance_Miles,
BikeID, StartLongitude, StartLatitude )
leaflet package. Make sure to include a legend and a title.
What do you notice about the distribution of rides?biketown_data %>%
leaflet() %>%
addTiles() %>%
addCircleMarkers(lng = ~StartLongitude, lat = ~StartLatitude)
Here we can see that the bulk of the rides start in the very center of the portland with a slighty denser amount on the west side of the river
lubridate package, create a variable,
month, indicating the month of each variable.Add this variable to your interactive map using color. Make sure to include a legend and be mindful of your color palette choice. Do ride locations vary by months of the year?
biketown_data <- biketown_data %>%
mutate(month = month(ymd_hms(EndDate)))
biketown_data$EndDate <- mdy(biketown_data$EndDate)
biketown_data <- biketown_data %>%
mutate(month = month(EndDate))
month_palette <- colorFactor(palette = "Set3", domain = unique(biketown_data$month))
biketown_data %>%
leaflet() %>%
addTiles() %>%
addCircleMarkers(lng = ~StartLongitude, lat = ~StartLatitude,
fillColor = ~month_palette(month),
color = "white", radius = 5, opacity = 1) %>%
addLegend(position = "bottomright",
colors = month_palette(unique(biketown_data$month)),
labels = month.abb[unique(biketown_data$month)],
title = "Month")
overall the locations dont seem to differ by month ### Problem 2: Choropleth Maps
For this problem, I want you to practice creating choropleth maps.
Let’s grab some data using tidycensus. Remember that you
will have to set up an API key.
api_key <- "94a98843fc99d4851ad1aafc71cddde2bfb1385b"
B25064_001)
from the American Community Survey for Multnomah county, Oregon. I want
you to do data pulls at three geography resolutions: county subdivision,
tract, and block group.subdiv <- get_acs(
geography = "county subdivision", # Correct geography level for county data
variables = "B25064_001", # Median gross rent
survey = "acs5",
state = "OR",
county = "Multnomah", # Correct argument name is 'county'
year = 2021,
geometry = TRUE)
##
|
| | 0%
|
|= | 2%
|
|=== | 4%
|
|==== | 6%
|
|===== | 8%
|
|======= | 10%
|
|======== | 11%
|
|========= | 12%
|
|========== | 14%
|
|=========== | 15%
|
|============ | 17%
|
|============= | 19%
|
|=============== | 21%
|
|================ | 23%
|
|================= | 25%
|
|=================== | 27%
|
|==================== | 29%
|
|====================== | 31%
|
|======================= | 33%
|
|======================== | 35%
|
|========================== | 37%
|
|=========================== | 38%
|
|============================ | 40%
|
|=============================== | 44%
|
|================================ | 46%
|
|================================== | 48%
|
|=================================== | 50%
|
|==================================== | 52%
|
|====================================== | 54%
|
|======================================= | 56%
|
|======================================== | 58%
|
|========================================== | 60%
|
|=========================================== | 61%
|
|============================================ | 63%
|
|============================================== | 65%
|
|=============================================== | 67%
|
|================================================ | 69%
|
|=================================================== | 73%
|
|==================================================== | 75%
|
|====================================================== | 77%
|
|======================================================= | 79%
|
|======================================================== | 81%
|
|=========================================================== | 84%
|
|============================================================ | 86%
|
|============================================================== | 88%
|
|=============================================================== | 90%
|
|================================================================= | 92%
|
|================================================================== | 94%
|
|=================================================================== | 96%
|
|===================================================================== | 98%
|
|======================================================================| 100%
tract <- get_acs(
geography = "tract", # Correct geography level for county data
variables = "B25064_001", # Median gross rent
survey = "acs5",
state = "OR",
county = "Multnomah", # Correct argument name is 'county'
year = 2021,
geometry = TRUE)
##
|
| | 0%
|
|= | 1%
|
|== | 3%
|
|=== | 4%
|
|==== | 6%
|
|===== | 7%
|
|======== | 11%
|
|========= | 13%
|
|========== | 14%
|
|=========== | 15%
|
|============ | 17%
|
|============= | 18%
|
|============== | 20%
|
|=============== | 21%
|
|================= | 24%
|
|================== | 25%
|
|=================== | 27%
|
|===================== | 29%
|
|======================== | 35%
|
|=================================================================== | 96%
|
|======================================================================| 100%
block_group <- get_acs(
geography = "block group", # Correct geography level for county data
variables = "B25064_001", # Median gross rent
survey = "acs5",
state = "OR",
county = "Multnomah", # Correct argument name is 'county'
year = 2021,
geometry = TRUE)
##
|
| | 0%
|
|= | 1%
|
|= | 2%
|
|== | 3%
|
|=== | 4%
|
|==== | 6%
|
|===== | 7%
|
|====== | 8%
|
|====== | 9%
|
|======= | 10%
|
|======== | 11%
|
|======== | 12%
|
|========= | 13%
|
|========== | 14%
|
|=========== | 15%
|
|=========== | 16%
|
|============ | 17%
|
|============= | 18%
|
|============== | 20%
|
|=============== | 21%
|
|=============== | 22%
|
|================ | 23%
|
|================== | 26%
|
|===================== | 30%
|
|=========================== | 39%
|
|================================ | 46%
|
|=========================================== | 62%
|
|============================================ | 63%
|
|============================================= | 64%
|
|============================================== | 65%
|
|============================================== | 66%
|
|=============================================== | 67%
|
|================================================ | 69%
|
|================================================= | 70%
|
|================================================= | 71%
|
|================================================== | 72%
|
|=================================================== | 72%
|
|=================================================== | 73%
|
|==================================================== | 74%
|
|===================================================== | 75%
|
|===================================================== | 76%
|
|====================================================== | 77%
|
|====================================================== | 78%
|
|======================================================= | 79%
|
|======================================================== | 79%
|
|======================================================== | 80%
|
|========================================================= | 82%
|
|========================================================== | 83%
|
|=========================================================== | 84%
|
|============================================================ | 85%
|
|============================================================ | 86%
|
|============================================================= | 87%
|
|============================================================= | 88%
|
|============================================================== | 89%
|
|=============================================================== | 89%
|
|=============================================================== | 90%
|
|================================================================ | 91%
|
|================================================================ | 92%
|
|================================================================= | 93%
|
|================================================================== | 95%
|
|=================================================================== | 96%
|
|==================================================================== | 96%
|
|==================================================================== | 97%
|
|===================================================================== | 98%
|
|===================================================================== | 99%
|
|======================================================================| 100%
subdiv %>%
st_as_sf() %>%
ggplot() +
geom_sf(aes(fill = estimate)) +
scale_fill_viridis_c() +
labs(fill = "Median Gross Rent") +
theme_void()
tract %>%
st_as_sf() %>%
ggplot() +
geom_sf(aes(fill = estimate)) +
scale_fill_viridis_c() +
labs(fill = "Median Gross Rent") +
theme_void()
block_group %>%
st_as_sf() %>%
ggplot() +
geom_sf(aes(fill = estimate)) +
scale_fill_viridis_c() +
labs(fill = "Median Gross Rent") +
theme_void()